#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <omp.h>
#include "util.h"

#define NUM_PAL 2190828
#define NUM_TH 4

//Numero de palavras 8763309
//Palavras por thread 21908328

int main(int argc, char **argv){

	double tempo, inicial = omp_get_wtime();

	FILE *arq;
	char ***texto;
	int i, j, id;
	int numPalim = 0, primo = 0;

	omp_set_num_threads(NUM_TH);

	texto = (char ***)malloc(NUM_TH*sizeof(char **));
	for(i = 0; i < NUM_TH; i++){
		texto[i] = (char **)malloc(NUM_PAL*sizeof(char *));
		for(j = 0; j < NUM_PAL; j++)
			texto[i][j] = (char *)malloc(TAM_PALAVRA*sizeof(char));
	}

	arq = fopen("wikipedia.txt", "r");

	for(i = 0; i < NUM_TH; i++){
		for(j = 0; j < NUM_PAL; j++)
			fscanf(arq,"%s", texto[i][j]);
			if(feof(arq))
				break;
	}

	for(; i < NUM_TH; i++)
		for(; j < NUM_PAL; j++)
			texto[i][j] = NULL;

	fclose(arq);
	
     	for(id = 0; id < NUM_TH; id++){
		for(i = 0; i < NUM_PAL; i++)
		{
				if(texto[id][i] == NULL)
					break;
				else{
					int asc = palim(texto[id][i], strlen(texto[id][i]));
					if(asc != 0){
						numPalim++;
						if(crivo(asc))
							primo++;
						}	
				}	
		}
	}
	
	tempo = omp_get_wtime() - inicial;

	printf("Numero de palindromos: %d\n", numPalim);
	printf("Numero de primos: %d\n", primo);
	printf("Tempo de execução: %.2lf seg\n", tempo);
	

return 0;
}






